﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;
using Cotizav.PRESENTACION.DialogBox;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUSector : Form
    {
        List<CONEXION.SECTOR> sectores;
        CtrlSector controlador;
        
        public IUSector()
        {
            InitializeComponent();
            sectores = new List<CONEXION.SECTOR>();
            controlador = new CtrlSector();
        }

        private void IUSector_Load(object sender, EventArgs e)
        {
            //mostrar la lista de los sectores registrados
            sectores = controlador.getListSector();
            gridSector.DataSource = null;
            gridSector.DataSource = sectores;
            setRowsReadOnly();        
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridSector.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreSector.Text))
            {
                List<SECTOR> result = controlador.buscarSectorExacto("nombreSector", txtNombreSector.Text.Trim());

                if (result.Count == 0)
                {
                    //procedemos a registrar
                    CONEXION.SECTOR sec = new CONEXION.SECTOR()
                    {
                        nombreSector = txtNombreSector.Text,
                        eliminado = 0
                    };

                    DialogResult dr = controlador.registrarSector(sec);
                    if (dr == DialogResult.OK)
                    {
                        //actualizamos la lista      
                        sectores = controlador.getListSector();
                        gridSector.DataSource = null;
                        gridSector.DataSource = sectores;

                        setRowsReadOnly();
                    }
                }
                else
                {
                    MessageBox.Show("el sector ingresado ya se encuentra en la lista","Cotizav",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
                }

                txtNombreSector.ResetText();
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {            
            if (gridSector.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreSector.Enabled = false;
                btnEliminar.Enabled = false;
                
                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridSector.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;
                
                        //volvemos la celda editable
                        gridSector.SelectedRows[0].ReadOnly = false;
                        gridSector.SelectedRows[0].Cells[1].Selected= true;
                        gridSector.CurrentCell = gridSector.SelectedRows[0].Cells[1];
                        gridSector.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridSector.CurrentRow.Index;
                        if (gridSector.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.SECTOR sec = new CONEXION.SECTOR()
                                {
                                    idSector = gridSector.Rows[ind].Cells[0].Value.ToString(),
                                    nombreSector = gridSector.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = controlador.actualizarSector(sec); 
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }                        

                        //actualizamos la lista      
                        sectores = controlador.getListSector();
                        gridSector.DataSource = null;
                        gridSector.DataSource = sectores;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreSector.Enabled = true;
                        btnEliminar.Enabled = true;

                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista      
            sectores = controlador.getListSector();
            gridSector.DataSource = null;
            gridSector.DataSource = sectores;

            setRowsReadOnly();

            //cambiamos el boton de modificar
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            //ocultamos  el boton cancelar
            btnCancelar.Visible = false; 

            //habilitamos el panel superior
            btnAgregar.Enabled = true;
            txtNombreSector.Enabled = true;
            btnEliminar.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridSector.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar el sector?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                {
                    int index = gridSector.SelectedRows[0].Index;
                    CONEXION.SECTOR sec = sectores.ElementAt(index);
                    sec.eliminado = 1;

                    controlador.eliminarSector(sec);
                }
            }

            //actualizamos la lista      
            sectores = controlador.getListSector();
            gridSector.DataSource = null;
            gridSector.DataSource = sectores;

            setRowsReadOnly();
        }

        private void gridSector_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridSector.DataSource != null)
            {
                gridSector.Columns["idSector"].Visible = false;
                gridSector.Columns["nombreSector"].HeaderText = "Sector";
                gridSector.Columns["nombreSector"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridSector.Columns["eliminado"].Visible = false;
            }
        }
    }
}
